package com.qf.zyh.services.impl;

import com.alibaba.druid.sql.visitor.functions.If;
import com.qf.zyh.dao.EmpDao;
import com.qf.zyh.dao.impl.EmpDaoImpl;
import com.qf.zyh.entity.Emp;
import com.qf.zyh.entity.Pages;
import com.qf.zyh.services.EmpServ;
import com.qf.zyh.util.DBUtil;
import com.qf.zyh.util.StringUtils;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class EmpServImpl implements EmpServ {
    EmpDao ed = new EmpDaoImpl();

    @Override
    public List<Emp> selectAll() {
        return ed.selectAll();
    }

    @Override
    public Emp selectin(String name, String pwd) {
        //接收返回的对象
        if (name==null) {
            if (pwd.equals(null)) {

            }
        }
        try {
            if (StringUtils.inNotEmp(name,pwd)) {
                DBUtil.begin();
                Emp emp = ed.selectin(name);
                DBUtil.commit();
                //对象不为空则判断密码是否相等
                if (emp != null && emp.getPwd().equals(pwd)) {
                    return emp;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBUtil.rollback();
        }
        return null;
    }

    @Override
    public boolean insert(Emp emp) {
        //首先判断传入对象不能为空
        try {
            if (emp!=null){
                DBUtil.begin();
                int i = ed.insert(emp);
                //添加个数大于0则添加成功
                DBUtil.commit();
                if (i>0){
                    return true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBUtil.rollback();
        }
        return false;
    }

    @Override
    public boolean delete(Integer i) {
        //首先判断id大于0则存在
        try {
            if (i>0) {
                DBUtil.begin();
                int e = ed.delete(i);
                DBUtil.commit();
                //删除个数大于0则删除成功
                if (e > 0) {
                    return true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBUtil.rollback();
        }
        return false;
    }

    @Override
    public boolean update(Emp emp) {
        try {
            if (emp!=null){
                DBUtil.begin();
                int i = ed.update(emp);
                DBUtil.commit();
                if (i>0){
                    return true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBUtil.rollback();
        }
        return false;
    }

    @Override
    public Emp selectid(Integer id) {
        try {
            if (id>0){
                DBUtil.begin();
                Emp selectid = ed.selectid(id);
                DBUtil.commit();
                return selectid;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBUtil.rollback();
        }
        return null;
    }

    @Override
    public Map<String, Object> selectPage(Integer pageIndex, Integer pageSize) {
        try {
            DBUtil.begin();
            //创建map集合存储数据
            Map<String,Object> map = new HashMap<>();
            //创建分页 类来进行分页处理，.intValue()是将数据int输出。
            Pages p = new Pages(pageIndex,pageSize,ed.getCount().intValue());
            //创建集合存储
            List<Emp> list = ed.selectPage(p.getStatrRow(),p.getPageSize());
            //将集合和类通过键值对的形式存储到mao集合中
            map.put("list",list);
            map.put("page",p);
            DBUtil.commit();
            return map;
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            DBUtil.rollback();
        }
        return null;
    }
}
